|
ARD2
RC2
Airbag Reference Demonstrator using MPC5604P
|
00001 00016 #include "derivative.h" 00017 #include "CGM.h" 00018 /* 00019 ****************************************************************************** 00020 * Constants 00021 ****************************************************************************** 00022 */ 00023 00024 /* 00025 ****************************************************************************** 00026 * Globals 00027 ****************************************************************************** 00028 */ 00029 00030 /* 00031 ****************************************************************************** 00032 * vfnClockOutputEnable 00033 ****************************************************************************** 00034 */ 00035 void vfnClockOutputEnable(CGMCLKOutConfig_t tMyCGMConfig) 00036 { 00037 00038 /* Start by determining if we want to enable or disable */ 00039 if(TRUE == tMyCGMConfig.P.Enable) 00040 { 00041 /* Select input and division factor */ 00042 CGM.OCDSSC.B.SELDIV = tMyCGMConfig.P.Divisor; 00043 CGM.OCDSSC.B.SELCTL = tMyCGMConfig.P.Source; 00044 00045 /* Enable output */ 00046 CGM.OCEN.R = TRUE; 00047 } 00048 else 00049 { 00050 /* Disable the output */ 00051 CGM.OCEN.R = CLEAR; 00052 } 00053 00054 return; 00055 } 00056 /* 00057 ****************************************************************************** 00058 * vfnClockOutputEnable 00059 ****************************************************************************** 00060 */ 00061 uint8_t u8fnClockPLLConfig(uint8_t u8PLLInstance, uint8_t u8IDF, uint8_t u8ODF, 00062 uint8_t u8LDF) 00063 { 00064 uint8_t u8Status; 00065 uint16_t u16Counter; 00066 00067 u8Status = CLEAR; 00068 u16Counter = CLEAR; 00069 00070 00071 /* Start by making sure that our instance is valid */ 00072 if(N_OF_PLL_INSTANCES > u8PLLInstance) 00073 { 00074 /* Make sure that passed arguments are within limits */ 00075 if((BIT4 > u8IDF) && (BIT2 > u8ODF) && (BIT7 > u8LDF)) 00076 { 00077 /* Enable Pll progressive switching */ 00078 CGM.FMPLL[u8PLLInstance].CR.B.EN_PLL_SW = TRUE; 00079 00080 /* Final frequency will be (Fosc * LDF) / (IDF * ODF) */ 00081 CGM.FMPLL[u8PLLInstance].CR.B.IDF = u8IDF; 00082 CGM.FMPLL[u8PLLInstance].CR.B.ODF = u8ODF; 00083 CGM.FMPLL[u8PLLInstance].CR.B.NDIV = u8LDF; 00084 00085 /* We don't know if settings have taken because we dont know if the */ 00086 /* PLL is on or off at this point. That will depend on some other fn. */ 00087 } 00088 else 00089 { 00090 u8Status = INVALID_PLL_DIVIDER; 00091 } 00092 } 00093 else 00094 { 00095 u8Status = INVALID_PLL_INSTANCE; 00096 } 00097 00098 return(u8Status); 00099 } 00100 /* 00101 ****************************************************************************** 00102 * vfnClearPLLFlag 00103 ****************************************************************************** 00104 */ 00105 void vfnClockClearPLLFlag(uint8_t u8PLLInstance) 00106 { 00107 CGM.FMPLL[u8PLLInstance].CR.B.PLL_FAIL_FLAG = TRUE; 00108 return; 00109 } 00110 //void vfnClockPLLConfigureMonitoring(uint8_t u8PLLInstance, uint16_t u16UL, 00111 // uint16_t u16LL) 00112 //{ 00113 // if(PLL_INSTANCE_0 = u8PLLInstance) 00114 // { 00115 // CGM.CMU_0_HFREF_A = u16UL; 00116 // } 00117 // return; 00118 //} 00119 /* 00120 ****************************************************************************** 00121 * 00122 * End of file. 00123 * 00124 ****************************************************************************** 00125 */